package com.example.hrsystem.workflow;

import android.content.Context;

import com.example.hrsystem.data.source.AppDatabase;
import com.example.hrsystem.workflow.model.ProcessDefinition;
import com.example.hrsystem.workflow.model.ProcessInstance;
import com.example.hrsystem.workflow.model.WorkflowTask;

import java.util.Date;

/**
 * 测试数据生成器
 * 用于生成工作流相关的测试数据
 */
public class TestDataGenerator {
    
    /**
     * 生成测试数据
     * 
     * @param context 上下文
     */
    public static void generateTestData(Context context) {
        AppDatabase database = AppDatabase.getDatabase(context);
        
        // 检查是否已有测试数据
        if (database.processDefinitionDao().getAllProcessDefinitions().size() > 0) {
            return; // 已有数据，不需要重新生成
        }
        
        // 创建测试流程定义
        ProcessDefinition definition = new ProcessDefinition();
        definition.setName("请假审批流程");
        definition.setDescription("员工请假审批流程");
        definition.setVersion(1);
        definition.setCreatedAt(new Date());
        database.processDefinitionDao().insertProcessDefinition(definition);
        
        // 创建测试流程实例
        ProcessInstance instance = new ProcessInstance();
        instance.setProcessDefinitionId(definition.getId());
        instance.setInstanceKey("PI-001");
        instance.setName("张三的请假申请");
        instance.setStatus("ACTIVE");
        instance.setInitiatorId(1); // 假设用户ID为1
        instance.setStartTime(new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000)); // 24小时前
        database.processInstanceDao().insertProcessInstance(instance);
        
        // 创建测试任务
        WorkflowTask task1 = new WorkflowTask();
        task1.setProcessInstanceId(instance.getId());
        task1.setName("提交申请");
        task1.setDescription("员工提交请假申请");
        task1.setStatus("COMPLETED");
        task1.setAssigneeId(1); // 假设用户ID为1
        task1.setCreateTime(new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000));
        task1.setCompleteTime(new Date(System.currentTimeMillis() - 23 * 60 * 60 * 1000));
        database.workflowTaskDao().insertTask(task1);
        
        WorkflowTask task2 = new WorkflowTask();
        task2.setProcessInstanceId(instance.getId());
        task2.setName("部门经理审批");
        task2.setDescription("部门经理审批请假申请");
        task2.setStatus("ASSIGNED");
        task2.setAssigneeId(2); // 假设用户ID为2
        task2.setCreateTime(new Date(System.currentTimeMillis() - 23 * 60 * 60 * 1000));
        database.workflowTaskDao().insertTask(task2);
    }
}